\chapter{Agile und Traditionelle Softwarentwicklung}

\section{Prozess}
In der Softwareentwicklung gibt es zwei Ansätze. Einmal die traditionelle Softwareentwicklung, die meistens auf dem Wasserfallmodell oder einer davon abgeleiteten Variante basiert. Diese Methode ist eine lineare und strukturierte Vorgehensweise, die auf Prozesse angewiesen ist um das Endergebnis zu erreichen. Zweitens die agile Methodik, dies ist ein nicht-lineare Ansatz zur Softwareentwicklung. Dabei werden Änderungen in den Anforderungen und Planung flexible über den gesamten Prozess anpasst.
\\
\\
Traditionelle Praktiken lassen sich in vier verschiedene Phasen unterteilen. Im ersten Schritt werden die Anforderungen für das Projekt und der Zeitplan festgelegt. In dieser Phase wird auch versucht alle Probleme, die entstehen können vorherzusagen. Sobald die Voraussetzungen geschaffen sind beginnt die Planung in der die technische Infrastruktur geschaffen wird.Nachdem die Planung abgeschlossen ist beginnt die Entwicklungsphase in der so lange Code erzeugt wird bis die spezifizierten Ziele erreicht werden. Die Entwicklung wird oft in kleinere Aufgaben aufgeteilt, die dann in verschiedenen Teams auf Grundlage ihrer \textit{Fertigkeiten} bearbeitet werden. Die Testphase  überschneidet sich oft mit der Entwicklungsphase, so kann frühzeitig sichergestellt werden, dass Probleme frühzeitig erkannt werden. Wenn sich das Projekt der Fertigstellung nähert und die Anforderungen erfüllt sind wird der Kunde in die Prüf- und Feedbackphase mit einbezogen.
\\
\\
Dieser lineare Ansatz zur Softwareentwicklung stützt sich auf strukturierte Prozesse und schwere Dokumentation. Der Erfolg einer starren Struktur beruht auf der Tatsache, dass alle Anforderungen bekannt sind, bevor die Entwicklungsphase beginnt. Dies macht es leicht, Zeitpläne festzulegen und Projektkosten sowie Ressourcen zu bestimmen.
\\
Doch wärend der Umsetzung können Problemen und neue Spezifikationen in der Entwicklungsphase auftreten. Der traditionellen Ansatz der Softwareentwicklung bietet nicht die Flexibilität, um diese Probleme ohne große Kosten und Zeitaufwand zu lösen. In komplexen Situationen kann dies bedeuten, dass ein Projekt noch einmal neu aufgenommen werden muss.

\newpage
Ein flexibler Ansatz zur Entwicklung von kundenspezifischer Software ist die agile Methodik. Bei diesem Ansatz liegt der Schwerpunkt weniger auf einem strukturierten Prozess der Entwicklung, sondern vielmehr auf der Zusammenarbeit im Team. Anstatt den Fortschritt eines Projekts an Unterlagen zu messen, ist hier das Ziel funktionierende Software in inkrementellen Phasen zu erzeugen. Im Gegensatz zu traditionellen Methoden steht der Kunde und der Entwickler im gesamten Projekt in engem Kontakt und treffen nicht nur beim Erstellen der Anforderung, der Dokumentation und den Vertragsverhandlungen aufeinander. Agile Methoden wurden entwickelt um auf ständig ändernde Bedürfnisse in einem Projekt besser reagieren zu können.
\\
\\
Bei agiler Softwareentwicklung werden Aufgaben iterativ und in kurzen Zyklen abgearbeitet. Diese Zyklen dauern im Schnitt 1-4 Wochen. Diese Iterationen folgen dem gleichen Verfahren wie bei der herkömmlichen Softwareentwicklung. Allerdings beinhaltet dieser Ansatz mehrere Iterationen in denen das Projekt durchlaufen wird anstatt zu versuchen in einem einzelne Entwicklungszyklus ein fertiges Produkt zu erstellen. Zu Beginn jeder Iteration wird das Projekt neu bewertet. Dies ermöglicht es auf wechselnde Anforderungen auch am Ende des Entwicklungsprozesses zu reagieren. Da der Kunde mehrere lauffähige Versionen der Software im gesamten Prozess erhält und so direkt Feedback geben kann, minimiert dies die Risiken auf Änderungen und somit auch Kosten.
\\
\\
Trotz des gesenkten Risikos bei der Softwareentwicklung mit agilen Methoden gibt es auch dort gewisse Nachteile. Aufgrund der Flexibilität kann es bei diesem Ansatz zu Schwierigkeiten bei der Erstellung von Zeitpläne und der Berechung des Budgets für das Projekt kommen. Der Erfolg beim agilen Vorgehen stützt sich auch auf die kontinuierliche Zusammenarbeit mit dem Kunden, wenn dieser aber keine Zeit hat um an dem Prozess teilzunemhmen muss dieser Ansatz nicht unbedingt der beste sein.


\section{Personen}